<script>
  // map
  const list = [1, 2, 3]
  // [2,4,6]
  const newList = list.map(item => {
    return item * 2
  })
  console.log(newList)
  // 要点1: 决定newList值是什么 是由map方法本身的返回值决定的！！
  // 1. map函数的返回值 决定了newList是什么  对的
  // 2. 参数函数的返回值 决定了newList是什么  错的
  // 要点2:参数函数的返回值决定了newList新数组中的每一项到底是什么

  // arr: 原数组  cb: 处理函数
  function selfMap (arr, cb) {
    const targetList = []
    // 逻辑: 遍历一下arr 把arr中的每一项都传入cb函数 执行这个cb得到一个结果 
    // 把处理之后的结果push到targetList中
    for (let i = 0; i < arr.length; i++) {
      const result = cb(arr[i])
      targetList.push(result)
    }
    return targetList
  }

  const list1 = selfMap(list, (item) => {
    return item * 2
  }) //【 2,4,6 】

  console.log(list1)

  // 高阶函数  map forEach some every filter reduce

</script>